package other;

/**
 * @author zhangjunfei
 * @date 2022/11/21 16:59
 * <p>
 * 问题描述：
 * 编写一个截取字符串的函数，输入为一个字符串和字节数，
 * 输出为按字节截取的字符串。但是要保证汉字不被截半个，
 * 如"我ABC"4，应该截为"我AB"，
 * 输入"我ABC汉DEF"，6，应该输出为"我ABC"而不是"我ABC+汉的半个"。
 * <p>
 * 问题考察：
 * 1.字符串长度（字符数）与字节数的区别
 * 2.英文只占一个字节，中文占两个字节或者3个字节
 */
public class TestCut {


    public static void main(String[] args) {
        String str = "ABC中文内容2134";

        System.out.println(str.substring(0,5));
    }

    //通过字节数截取字符串
    private static String cutString(String str, int i) {
        String tempStr=null;
        StringBuilder resultStr=new StringBuilder();
        int len=0;
        int sum=0;
        for(int j=0;j<str.length();j++){
            tempStr=String.valueOf(str.charAt(j));
            len=tempStr.getBytes().length;
            //判断是否是汉字
            if(len>1){
                sum=sum+len;
                //判断字节数是否已越界
                if(sum<=i){
                    resultStr.append(tempStr);
                }else{
                    break;
                }
            }else{
                sum=sum+1;
                if(sum<=i){
                    resultStr.append(tempStr);
                }else{
                    break;
                }
            }
        }
        return resultStr.toString();
    }

}
